#include<stdio.h>
#include<signal.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>

volatile int quit=0;//保持变量quit的内存可见性

void Count(int cnt)
{
    while(cnt)
    {
        //cout<<"cnt:"<<cnt;
        printf("cnt: %d\r",cnt);
        fflush(stdout);
        cnt--;
        sleep(1);
    }
    printf("\n");
}

void handler(int signo)
{
 pid_t id=0;
 while( (id = waitpid(-1, NULL, WNOHANG)) > 0){
 printf("wait child success: %d\n", id);
 }
 printf("child is quit! %d\n", getpid());
}
// void handler(int signo)
// {

//  printf("我是父进程,pid:%d ,我接收到了子进程的%d 号信号\n",getpid(),signo);
//     // printf("pid: %d, %d 号信号正在被捕获！\n",getpid(),signo);
//     // printf("quit: %d",quit);
//     // quit=1;
//     // printf("-> %d\n",quit);
// }

int main()
{
    signal(SIGCHLD,SIG_IGN);
  //  signal(SIGCHLD,handler);
    printf("我是父进程id: %d, ppid: %d\n",getpid(),getppid());
  pid_t id=fork();
  if(id==0)
  {
      printf("我是子进程id: %d, ppid: %d\n",getpid(),getppid());
    //  Count(5);
      exit(1);
  }
 while(1) sleep(1);

// signal(2,handler);
// while(!quit);
//  printf("注意，我是正常退出的！\n");
    return 0;
}